//implement PocoThreadImpl
//andycai_sc 2011-04-29

#include "GParallel/GPoco/PocoThreadImpl.h"

RunnableImpl::RunnableImpl(PocoThreadImpl* pocoThreadImpl) : m_pocoThreadImpl(pocoThreadImpl)
{
}

RunnableImpl::~RunnableImpl()
{
}

void RunnableImpl::run()
{
	m_pocoThreadImpl->exec();
}

PocoThreadImpl::PocoThreadImpl(GThread* _thread) : GThreadImpl(_thread), m_runable(this)
{
}

PocoThreadImpl::~PocoThreadImpl()
{
}

void PocoThreadImpl::startImpl()
{
	m_pocoThread.start(m_runable);
}

void PocoThreadImpl::stopImpl()
{
}

void PocoThreadImpl::joinImpl()
{
	m_pocoThread.join();
}

#if (defined(USE_POCO_ALL) && !defined(NO_POCO_THREAD)) || defined(USE_POCO_THREAD)
GThreadImpl::sleepImpl* GThreadImpl::_sleepImpl = &(Poco::Thread::sleep);
#endif

GThreadImpl* createThreadFromPoco(GThread *_thread)
{
	return new PocoThreadImpl(_thread);
}
